

package cn.shengchao.examstar.distribute.infrastrure.service;

import cn.shengchao.examstar.distribute.infrastrure.po.DistributeUserInvite;
import cn.shengchao.examstar.rpc.base.PageResult;
import cn.shengchao.examstar.rpc.distribute.dto.UserInviteDto;
import cn.shengchao.examstar.rpc.uddsys.req.DistributeUserInvitePageQuery;
import cn.shengchao.examstar.rpc.uddsys.req.DistributeUserInviteSaveDto;
import cn.shengchao.examstar.rpc.uddsys.resp.DistributeUserInviteVo;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface DistributeUserInviteService extends IService<DistributeUserInvite> {
    List<UserInviteDto> selectUserInviteRecords(List<Long> userIds);
    void saveInviteRecord(UserInviteDto userInviteDto);

    /**
     * 获取邀请记录
     *
     * @param userInviterIds 邀请人
     * @return List<DistributeUserInvite>
     */
    Map<Long, List<DistributeUserInvite>> getInviteRecord(List<Long> userInviterIds, Date start, Date end);

    /**
     * 获取邀请记录列表
     */
    List<DistributeUserInvite> getInviteRecordListByDistributeUserId(List<Long> userIds);
    /**
     * 获取邀请记录列表，过滤角色
     */
    List<DistributeUserInvite> getInviteRecordListByDistributeUserIdsAndRole(List<Long> userIds,  String distributeRoleCode,Date start, Date end);

    void batchUpdateUserInviteRecord(Long userId);

    void batchUpdateUserInviteRecordForJms(Long userId, Long distributeUserId);

    PageResult<DistributeUserInviteVo> queryDistributeUserInvitePage(DistributeUserInvitePageQuery distributeUserInvitePageQuery);

    void updateWxInviteRecord(DistributeUserInviteSaveDto userInviteSaveDto);
    /**
     * 分销记录的员工替换
     */
    void batchUpdateUserInviteRecordForJmsYg(Long userId, UserInviteDto userInviteDto2);
}
